/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package ejb;


import entity.AnagraficaUtente;
import entity.Campo;
import entity.Evento;
import entity.News;
import entity.Posto;
import entity.PrenotazioneCampo;
import entity.PrenotazioneEvento;
import entity.Utente;
import java.sql.Date;
import java.util.List;
import javax.ejb.Local;

/**
 *
 * @author Marco
 */
@Local
public interface BusinessLogicLocal {

    List<Utente> checkLogin(String nomeUtente, String password);
    
    String insertUtente(String codiceFiscale, String nome, String cognome, char sesso, String dataNascita, String luogoNascita, String indirizzoResidenza, String email, String password, String telefono);

    boolean validateRegistration(String nomeUtente);

    boolean changePwd(String nomeUtente, String password);

    List<AnagraficaUtente> getProfiloUtente(String utente);

    String insertEvento(String titoloEvento, String descrizioneEvento, String dataEvento, String orari, float prezzoParterre, float prezzoArancio, float prezzoBlu, float prezzoRosso, float prezzoVerde, float prezzoGiallo, String locandina);

    List<Evento> findAllEvent();

    Evento findEventbyId(long idEvento);
    
    boolean cancellaUtente(long id);
    
    boolean cambiaPermessi(int flag, long id);
    
    List<Utente> caricaUtenti();

    boolean cancellaEvento(long idEvento);

    boolean updateEvento(long id, String titoloEvento, String descrizioneEvento,Date dataEvento, String orari, float prezzoParterre, float prezzoArancio, float prezzoBlu, float prezzoRosso, float prezzoVerde, float prezzoGiallo);

    boolean loadDataFile(String fileName, String typeFile);

    String Cripta(String psw);

    boolean validateEvent(String dataEvento, String oraEvento);

    void insertPosto(int numero, String fila, String settore, boolean disabili);

    void createConfigFile(String xml);

    int contaPostiLiberi(Long idEvento, String settore);

    List<StatusPosto> getStatoPosti(long idEvento, String settore);
    
    List<Evento> getListEvent();

    boolean prenotaPosto(long idPosto, long idPreno, float costo);

    Long trovaPosto(int numero, String fila, String settore);

    Long getIdUtente(String nomeUtente);

    Long creaPrenotazione(long idUtente, long idEvento, Date data);

    float getCosto(long idEvento, String settore);

    boolean insertCampo(int nCampo, int nSpett, String sport, String terreno, String immagine, float prezzo);

    boolean modificaCampo(Long idCampo, int nCampo, int nSpett, String sport, String terreno, String immagine, float prezzo);

    List<Campo> getCampi();

    boolean insertNews(String titoloNews, String descNews, Date dataNews);

    List<News> readNews();

    List<Campo> getCampiBySport(String sport);
    
    List<String> getAllSportType();
    
    void updateFastSearch(String path);

    boolean prenotaCampo(long idCampo, long idUtente, String dataPreno, String ora, String nCampo);

    boolean findPrenotazioneCampo(long idCampo, Date data, String ora);

    News getNews(long id);

    List<Campo> getCampiDisponibili(String Sport, String Campo, String Orario);

    List<PrenotazioneCampo> getPrenotazioniCampoUtente(String nomeUtente);

    Campo getCampo(long id_campo);

    Campo getCampoNum(Integer id_campo);
    
    List<PrenotazioneEvento> getPrenotazioniEventoUtente(String nomeUtente);

    Evento getEvento(long id_evento);

    List<Posto> getPostiPrenotazione(long id_prenotazione);
    
    String[] getServices(String sport);
    
    void sendMail(String destinatario, String soggetto, String messaggio, String img_biglietto, String img_locandina);     

    Boolean convalidaUtente(String email, String pass);

    Boolean recuperaPsw(String email);

}
